Workload-aware storage-location system

ABSTRACT

A method and associated systems for a workload-aware thin-provisioning system that allocates physical storage to virtual resources from pools of physical storage volumes. The system receives constraints that limit the amount of storage that can be allocated from each pool and the total workload that can be directed to each pool. It also receives lists of previous workloads and allocations associated with each volume at specific times in the past. The system then predicts future workloads and allocation requirements for each volume by regressing linear equations derived from the received data. If the predicted values indicate that a pool will at a future time violate a received constraint, the system computes the minimum costs to move each volume of the offending pool to a less-burdened pool. It then selects the lowest-cost combination of volume and destination pool and then moves the selected volume to the selected pool.

This application is a continuation application claiming priority to Ser.No. 16/181,968, filed Nov. 6, 2018, which is a continuation of Ser. No.15/336,964, filed Oct. 28, 2016.

BACKGROUND

The present invention relates to improving the efficiency of adata-storage management system configured to allocate storage capacityby means of a thin-provisioning methodology.

Thin provisioning is a flexible method of space-efficiently allocatingvirtual storage to multiple users from one or more shared pools ofphysical computer-readable storage devices, such as a bank ofrotating-media hard drives or an array of solid-state disks. Thinprovisioning uses virtualization technology to provision virtual storagevolumes that, in aggregate, may appear to offer greater total storagecapacity than that of the physical pool.

A thin-provisioned storage device, such as a virtual disk drive, is thusassociated with both a virtual storage capacity and a physical (or real)storage capacity. The device's virtual capacity is the capacity that isvisible to a user or host, and the device's real capacity is thephysical storage capacity that is actually allocated and available tothe device.

In one example, a pool of physical hard drives may have a totalaggregate physical storage capacity of 1,000 TB. A thin-provisioningstorage-management utility or a thin-provisioning component of astorage-management system might provision a 3 TB virtual volume for eachof 1,000 users, supporting each 3 TB virtual volume with ITB of physicalstorage. Although the users perceive a total of 3,000 TB of virtualstorage, only 1,000 TB of physical storage is actually available.

This thin-provisioning strategy works because the thin-provisioningsystem has estimated that each user, on average, is likely to consumeless than 1 TB of physical storage. If one user does at some pointrequire more than 1 TB of real storage space, the thin-provisioningmechanism must transfer additional physical storage capacity to thatuser from a second user who needs less than 1 TB of physical storage.

It is thus important for thin-provisioned storage devices to configureenough real capacity to ensure that users do not run out of physicalstorage, but not configure so much that a large amount of excessphysical capacity is wasted. A failure to meet both these criteria canreduce the efficiency of a storage-management system by eitherincreasing the frequency of reprovisioning tasks or by wasting valuablephysical storage capacity.

Load-balancing is another function performed by virtualized-storagemanagement systems. This task requires the storage management system todirect workloads (which may be measured as input/output operations persecond or IOPS) to storage devices in a balanced manner. For example, aload-balancing component of a storage-management system might try toavoid overloading a first hard drive with a transaction-processingsystem's high volume of read/write operations by instead directing thoseoperations (and the data upon which the operations are performed) to asecond drive that has a lighter workload.

In a thin-provisioning system, load-balancing tasks are generallyconsidered to be unrelated to storage-allocation, but the two functionsare not completely independent. In one example, additional physicalstorage may be allocated to a virtual drive in order to allow thevirtual drive to store data required by a new application. If the newlystored data is subject to a high volume of transactions, the physicalstorage unit from which the additional physical storage was allocatedwill experience a workload increase indirectly related to the provisionof new storage on the virtual device.

A problem that is thus unique to storage-management systems, and isparticularly relevant to thin-provisioning storage-management systems,is that dynamic storage-allocation and load-balancing functions aretoday performed independently, generally by two different components ofthe storage-management system. This results in less accurate and lessefficient storage allocation. There is therefore a need for a way tointegrate storage allocation and load-balancing functions into a singleoperation, such that that the storage-management system may performallocation and balancing tasks more efficiently and accurately.

BRIEF SUMMARY

One embodiment of the present invention provides storage-allocationsystem comprising:

a processor,

a memory coupled to the processor,

a computer-readable hardware-storage device coupled to the processor,where the storage device contains program code configured to be run bythe processor via the memory to implement a method for workload-awarethin provisioning of a plurality of physical storage volumes, each ofwhich is comprised by one pool of a plurality of shared pools ofphysical storage, and

a set of client computer-storage controllers coupled to the processorthat are each capable of moving a volume of the plurality of physicalstorage volumes between two pools of the plurality of shared pools,

the method comprising:

identifying, for a first pool of the plurality of shared pools, amaximum workload that may be directed to the first pool and a maximumamount of physical storage capacity that may be allocated from the firstpool to one or more virtual resources;

receiving a workload profile and a capacity profile for each volume ofthe plurality of physical storage volumes,

where the first pool comprises a first volume of the plurality ofphysical storage volumes,

where a first workload profile and a first capacity profile is receivedfor the first volume,

where the first workload profile comprises time-stamped records thateach identify a workload directed to the first volume at a past time,and

where the first capacity profile comprises time-stamped records thateach identify an amount of physical storage capacity allocated from thefirst volume at a previous time;

predicting, as a function of the first workload profile and the firstcapacity profile, a predicted amount of physical storage expected to beallocated from the first volume at a future time t;

forecasting, as a function of the first workload profile, the firstcapacity profile, and the predicted amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time t;

determining that a conflict will occur at the future time t thatprevents the forecasted workload from being directed to the first volumeat the same time that the predicted amount of physical storage isallocated from the first volume;

resolving the conflict by directing the client computer-storagecontrollers to move a lowest-cost volume of the plurality of physicalstorage volumes from the first pool to a second pool of the plurality ofshared pools.

Another embodiment of the present invention provides method forworkload-aware thin provisioning of a plurality of physical storagevolumes comprised by a plurality of shared pools of physical storage,the method comprising:

identifying, for a first pool of the plurality of shared pools ofphysical storage, a maximum workload that may be directed to the firstpool and a maximum amount of physical storage capacity that may beallocated from the first pool to one or more virtual resources;

receiving a workload profile and a capacity profile for each volume ofthe plurality of physical storage volumes,

where the first pool comprises a first volume of the plurality ofphysical storage volumes,

where a first workload profile and a first capacity profile is receivedfor the first volume,

where the first workload profile comprises time-stamped records thateach identify a workload directed to the first volume at a past time,and

where the first capacity profile comprises time-stamped records thateach identify an amount of physical storage capacity allocated from thefirst volume at a previous time;

predicting, as a function of the first workload profile and the firstcapacity profile, a predicted amount of physical storage expected to beallocated from the first volume at a future time t;

forecasting, as a function of the first workload profile, the firstcapacity profile, and the predicted amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time t;

determining that a conflict will occur at the future time t thatprevents the forecasted workload from being directed to the first volumeat the same time that the predicted amount of physical storage isallocated from the first volume;

resolving the conflict by directing a set of client computer-storagecontrollers to move a lowest-cost volume of the plurality of physicalstorage volumes from the first pool to a second pool of the plurality ofshared pools, where the set of client computer-storage controllers.

Yet another embodiment of the present invention provides a computerprogram product, comprising a computer-readable hardware storage devicehaving a computer-readable program code stored therein, the program codeconfigured to be executed by a storage-allocation system comprising:

a processor,

a memory coupled to the processor,

a computer-readable hardware-storage device coupled to the processor,where the storage device contains program code configured to be run bythe processor via the memory to implement a method for workload-awarethin provisioning of a plurality of physical storage volumes, each ofwhich is comprised by one pool of a plurality of shared pools ofphysical storage, and

a set of client computer-storage controllers coupled to the processorthat are each capable of moving a volume of the plurality of physicalstorage volumes between two pools of the plurality of shared pools,

the method comprising:

identifying, for a first pool of the plurality of shared pools, amaximum workload that may be directed to the first pool and a maximumamount of physical storage capacity that may be allocated from the firstpool to one or more virtual resources;

receiving a workload profile and a capacity profile for each volume ofthe plurality of physical storage volumes,

where the first pool comprises a first volume of the plurality ofphysical storage volumes,

where a first workload profile and a first capacity profile is receivedfor the first volume,

where the first workload profile comprises time-stamped records thateach identify a workload directed to the first volume at a past time,and

where the first capacity profile comprises time-stamped records thateach identify an amount of physical storage capacity allocated from thefirst volume at a previous time;

predicting, as a function of the first workload profile and the firstcapacity profile, a predicted amount of physical storage expected to beallocated from the first volume at a future time t;

forecasting, as a function of the first workload profile, the firstcapacity profile, and the predicted amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time t;

determining that a conflict will occur at the future time t thatprevents the forecasted workload from being directed to the first volumeat the same time that the predicted amount of physical storage isallocated from the first volume;

resolving the conflict by directing the client computer-storagecontrollers to move a lowest-cost volume of the plurality of physicalstorage volumes from the first pool to a second pool of the plurality ofshared pools.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows the structure of a computer system and computer programcode that may be used to implement a method for a workload-awarethin-provisioning storage-allocation system in accordance withembodiments of the present invention.

FIG. 2 is a flow chart that illustrates steps of a method for aworkload-aware thin-provisioning storage-allocation system in accordancewith embodiments of the present invention.

FIG. 3 is a flow chart that illustrates additional steps of a method fora workload-aware thin-provisioning storage-allocation system inaccordance with embodiments of the present invention.

DETAILED DESCRIPTION

In a virtualized storage-management system that uses thin-provisioningtechniques of storage allocation, the task of allocating virtual storagefrom a pool of physical storage is generally considered to be unrelatedto workload-balancing tasks. Existing thin-provisioningstorage-management systems at most consider workload in a simplisticmanner, assuming that an increasing frequency of a volume's writeoperations increases a likelihood that the volume will require greatercapacity. Current systems thus use an algorithm or software module tomanage storage allocation that is almost completely independent of thealgorithm or software module used to balance workloads.

As described in the BACKGROUND, however, allocation and balancingoperations are not completely decoupled and can have indirect, butsignificant, effects on each other. A storage-management mechanism thatuses independent mechanisms to perform these operations are not ingeneral consider or account for these effects.

The present invention integrates these two operations into aworkload-aware thin-provisioning mechanism capable of identifying andaccounting for intrinsic relationships between workload-balancing tasksand capacity-allocation tasks. As a result, the present invention canincrease the efficiency of a virtualized storage-management system byintegrating workload-aware factors into the system's storage-allocationfunction.

Specifically, the storage capacity of a device is dynamically allocatedby considering its historical capacity profile and workload profile, aswell as the total physical capacity constraint in a pool and theworkload balancing constraint.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

FIG. 1 shows a structure of a computer system and computer program codethat may be used to implement a method for a workload-awarethin-provisioning storage-allocation system in accordance withembodiments of the present invention. FIG. 1 refers to objects 101-115.

In FIG. 1, computer system 101 comprises a processor 103 coupled throughone or more I/O Interfaces 109 to one or more hardware data storagedevices 111 and one or more I/O devices 113 and 115.

Hardware data storage devices 111 may include, but are not limited to,magnetic tape drives, fixed or removable hard disks, optical discs,storage-equipped mobile devices, and solid-state random-access orread-only storage devices. I/O devices may comprise, but are not limitedto: input devices 113, such as keyboards, scanners, handheldtelecommunications devices, touch-sensitive displays, tablets, biometricreaders, joysticks, trackballs, or computer mice; and output devices115, which may comprise, but are not limited to printers, plotters,tablets, mobile telephones, displays, or sound-producing devices. Datastorage devices 111, input devices 113, and output devices 115 may belocated either locally or at remote sites from which they are connectedto I/O Interface 109 through a network interface.

Processor 103 may also be connected to one or more memory devices 105,which may include, but are not limited to, Dynamic RAM (DRAM), StaticRAM (SRAM), Programmable Read-Only Memory (PROM), Field-ProgrammableGate Arrays (FPGA), Secure Digital memory cards, SIM cards, or othertypes of memory devices.

At least one memory device 105 contains stored computer program code107, which is a computer program that comprises computer-executableinstructions. The stored computer program code includes a program thatimplements a method for a workload-aware thin-provisioningstorage-allocation system in accordance with embodiments of the presentinvention, and may implement other embodiments described in thisspecification, including the methods illustrated in FIGS. 1-3. The datastorage devices 111 may store the computer program code 107. Computerprogram code 107 stored in the storage devices 111 is configured to beexecuted by processor 103 via the memory devices 105. Processor 103executes the stored computer program code 107.

In some embodiments, rather than being stored and accessed from a harddrive, optical disc or other writeable, rewriteable, or removablehardware data-storage device 111, stored computer program code 107 maybe stored on a static, nonremovable, read-only storage medium such as aRead-Only Memory (ROM) device 105, or may be accessed by processor 103directly from such a static, nonremovable, read-only medium 105.Similarly, in some embodiments, stored computer program code 107 may bestored as computer-readable firmware 105, or may be accessed byprocessor 103 directly from such firmware 105, rather than from a moredynamic or removable hardware data-storage device 111, such as a harddrive or optical disc.

Thus the present invention discloses a process for supporting computerinfrastructure, integrating, hosting, maintaining, and deployingcomputer-readable code into the computer system 101, wherein the code incombination with the computer system 101 is capable of performing amethod for a workload-aware thin-provisioning storage-allocation system.

Any of the components of the present invention could be created,integrated, hosted, maintained, deployed, managed, serviced, supported,etc. by a service provider who offers to facilitate a method for aworkload-aware thin-provisioning storage-allocation system. Thus thepresent invention discloses a process for deploying or integratingcomputing infrastructure, comprising integrating computer-readable codeinto the computer system 101, wherein the code in combination with thecomputer system 101 is capable of performing a method for aworkload-aware thin-provisioning storage-allocation system.

One or more data storage units 111 (or one or more additional memorydevices not shown in FIG. 1) may be used as a computer-readable hardwarestorage device having a computer-readable program embodied thereinand/or having other data stored therein, wherein the computer-readableprogram comprises stored computer program code 107. Generally, acomputer program product (or, alternatively, an article of manufacture)of computer system 101 may comprise the computer-readable hardwarestorage device.

While it is understood that program code 107 for a method for aworkload-aware thin-provisioning storage-allocation system may bedeployed by manually loading the program code 107 directly into client,server, and proxy computers (not shown) by loading the program code 107into a computer-readable storage medium (e.g., computer data storagedevice 111), program code 107 may also be automatically orsemi-automatically deployed into computer system 101 by sending programcode 107 to a central server (e.g., computer system 101) or to a groupof central servers. Program code 107 may then be downloaded into clientcomputers (not shown) that will execute program code 107.

Alternatively, program code 107 may be sent directly to the clientcomputer via e-mail. Program code 107 may then either be detached to adirectory on the client computer or loaded into a directory on theclient computer by an e-mail option that selects a program that detachesprogram code 107 into the directory.

Another alternative is to send program code 107 directly to a directoryon the client computer hard drive. If proxy servers are configured, theprocess selects the proxy server code, determines on which computers toplace the proxy servers' code, transmits the proxy server code, and theninstalls the proxy server code on the proxy computer. Program code 107is then transmitted to the proxy server and stored on the proxy server.

In one embodiment, program code 107 for a method for a workload-awarethin-provisioning storage-allocation system is integrated into a client,server and network environment by providing for program code 107 tocoexist with software applications (not shown), operating systems (notshown) and network operating systems software (not shown) and theninstalling program code 107 on the clients and servers in theenvironment where program code 107 will function.

The first step of the aforementioned integration of code included inprogram code 107 is to identify any software on the clients and servers,including the network operating system (not shown), where program code107 will be deployed that are required by program code 107 or that workin conjunction with program code 107. This identified software includesthe network operating system, where the network operating systemcomprises software that enhances a basic operating system by addingnetworking features. Next, the software applications and version numbersare identified and compared to a list of software applications andcorrect version numbers that have been tested to work with program code107. A software application that is missing or that does not match acorrect version number is upgraded to the correct version.

A program instruction that passes parameters from program code 107 to asoftware application is checked to ensure that the instruction'sparameter list matches a parameter list required by the program code107. Conversely, a parameter passed by the software application toprogram code 107 is checked to ensure that the parameter matches aparameter required by program code 107. The client and server operatingsystems, including the network operating systems, are identified andcompared to a list of operating systems, version numbers, and networksoftware programs that have been tested to work with program code 107.An operating system, version number, or network software program thatdoes not match an entry of the list of tested operating systems andversion numbers is upgraded to the listed level on the client computersand upgraded to the listed level on the server computers.

After ensuring that the software, where program code 107 is to bedeployed, is at a correct version level that has been tested to workwith program code 107, the integration is completed by installingprogram code 107 on the clients and servers.

In embodiments described herein, interfaces 109 and storage devices 115comprise means by which computer system 101 may perform tasks related tothin-provisioning shared pools of physical storage. These means maycomprise storage controllers and networking interfaces that enable thecomputer system 101 to allocate and deallocate physical storage fromparticular physical volumes or to migrate a physical volume from oneshared storage pool to another, as shown in FIGS. 2-3.

Embodiments of the present invention may be implemented as a methodperformed by a processor of a computer system, as a computer programproduct, as a computer system, or as a processor-performed process orservice for supporting computer infrastructure.

FIG. 2 is a flow chart that illustrates steps of a method for aworkload-aware thin-provisioning storage-allocation system in accordancewith embodiments of the present invention. The final steps of thismethod are shown in FIG. 3. FIG. 2 shows steps 200-236.

Step 200 initiates an outermost iterative procedure of steps 205-235.This outermost loop is performed once for every pool j of physicalstorage, where each pool j comprises n physical volumes v.

In step 205, a processor of a thin-provisioning storage-managementsystem receives or otherwise identifies a threshold storage-allocationlimit and a threshold workload limit of the pool j currently beingprocessed by the outermost iterative procedure.

The storage-allocation limit identifies a maximum amount of physicalstorage capacity that may be allocated from pool j to one or morevirtual volumes. This limit may be as simple as a total physicalcapacity of all volumes v comprised by pool j, or it may be a functionof that total physical capacity. For example, if a manufacturerspecification, an industry convention, or a business policy considers aphysical volume to be “fully allocated” when 95% of the volume'sphysical capacity has been allocated, a pool's storage-allocation limitmay equal 95% of the sum of all physical capacity of all volumescomprised by the pool. Embodiments of the present invention mayaccommodate any threshold storage-allocation limit deemed desirable byan implementer. In other cases, the storage-allocation limit may beidentified by other means known in the art, such as by querying a diskcontroller component, a system-configuration software module, or storedsystem-configuration information.

Similarly, the threshold workload limit of the currently processed poolj identifies a maximum amount of workload that may be handled by pool j.This maximum workload may be expressed in units of input/outputoperations/second, read transactions/second, write transactions/second,or any other unit known in the field. This workload limit may be definedby any means acceptable to an implementer, such as selecting a limitspecified by a manufacturer, choosing a threshold beyond whichperformance has in the past degraded, or estimating a limit as afunction of a physical volume's known maximum I/O bandwidth.

As with the storage-allocation limit, embodiments of the presentinvention may accommodate any workload limit deemed reasonable by animplementer. In a simplest case, this limit may be arbitrarily set to afigure that is 70% of a physical volume's specified I/O bandwidth.

Step 210 initiates an innermost iterative procedure of steps 205-235.This procedure is repeated once for every physical volume comprised byone or more shared pools of physical storage units.

This thin-provisioning system may be part of a larger virtualstorage-management system or it may be a module, plug-in, or othersoftware component intended to interoperate with a larger virtualstorage-management system.

As described above, the thin-provisioning system automatically anddynamically allocates physical storage as needed by users from the oneor more shared pools to a set of virtual storage devices visible tousers. Each physical storage device of a shared pool may comprise one ormore volumes of physical storage and each virtual storage deviceprovisioned to a user may comprise one or more volumes of virtualstorage.

In step 215, the system receives a workload profile for the currentphysical volume. This profile lists workloads managed by the volume atspecific times in the past, and will be used to help predict futureworkloads that may be imposed on the current volume.

One example of such a workload profile for an exemplary VolumeP090100375 might comprise entries:

TABLE 1 Volume P90375 Date/Time Workload (IOPS) 20160901:00:01:00:0000109 20160901:00:01:00:050 0155 20160901:00:01:01:000 341020160901:00:01:01:050 9721 20160901:00:01:02:000 954220160901:00:01:02:050 2002 20160901:00:01:03:000 004120160901:00:01:03:050 0056

The first line of this example shows that physical Volume P090100375performed 109 I/O operations per second at 12:01 AM on Sep. 1, 2016. Thenext line shows that, at a time 0.5 seconds later, Volume P090100375performed 155 I/O operations per second.

A real-world workload profile may comprise large numbers of suchtime-stamped workload figures, which may be collected by means known inthe art, such as by a logging function of a storage-management system.In any particular embodiment, the range of time identified by theworkload profile and the frequency of workload measurements may befreely determined as a function of a goal or intent of the embodiment,of a technical constraint, or of other implementation-dependent details.In general, however, more accurate results may be obtained when workloadprofiles contain a greater total number of workload measurements, agreater frequency of measurements, or a longer span of time over whichmeasurements are collected.

In step 220, the system receives a capacity profile for the currentphysical volume. This profile lists the amount of physical storagecapacity that was allocated at specific times in the past from thephysical volume to one or more virtual volumes. This information will beused to help predict amounts of storage that may be expected to beallocated from the volume in the future.

One example of such a capacity profile for Volume P090100375 mightcomprise entries:

TABLE 2 Volume P90375 Date/Time Allocated Capacity (TB)20171030:14:27:00 .13 20171030:14:27:05 .13 20171030:14:27:10 .4520171030:14:27:15 .49 20171030:14:27:20 .49 20171030:14:27:25 .4920171030:14:27:30 .24 20171030:14:27:35 .46

The first line of this example shows that 0.13 TB of physical storagecomprised by physical Volume P090100375 was allocated to virtual storagevolumes at 2:27 PM on Oct. 30, 2017. The second line shows that the sameamount of physical storage was allocated from the volume five secondslater, and the third line shows that, five seconds after the secondmeasurement, a total of 0.45 TB of physical storage was allocated fromthe volume.

A real-world capacity profile may comprise large numbers of suchtime-stamped capacity-allocation figures. Like the workload profile, acapacity profile may contain information collected by means known in theart, such as by a logging function of a storage-management system or bya hardware-maintenance utility.

As with the workload profile, the range of time identified by a capacityprofile and the frequency of capacity measurements may be freelydetermined as a function of a goal or intent of the embodiment, of atechnical constraint, or of other implementation-dependent details. Ingeneral, however, more accurate results may be obtained when capacityprofiles contain a greater total number of capacity measurements, agreater frequency of measurements, or a longer span of time over whichmeasurements are collected.

This document contains examples of workload profiles and capacityprofiles that contain measurements sampled at fixed, periodic times. Butin other embodiments, there is no such constraint on the times at whichmeasurements are sampled. Workload and capacity measurements may berecorded at irregular intervals, at random intervals, at certain timesof day, when certain conditions are met, or as a function of any otherrules that an implementer might deem to provide more representative ortypical results.

In step 225, the system optionally identifies supplementary constraintsassociated with the shared pools and the virtual volumes provisionedfrom the pools' physical storage.

In various embodiments, these constraints may comprise one or moreoptional contractual, technical, service-oriented, or other types ofsupplementary or ad hoc constraints, as selected by implementers inorder to customize an embodiment of the present invention.

Some embodiments of the present invention may accommodate a wide rangeof these supplementary or ad hoc constraints, which may be selected atwill by implementers. If, for example, a business's system-maintenancepolicy requires all virtual volumes associated with the same virtualmachine to be provisioned from the same pool, then that constraint maybe selected and identified in this step. Other ad hoc constraints may beidentified at will by an implementer if, for example, the constraintsare required by a term of a service agreement, represent a manufacturerrecommendation limiting a particular component's workload or storageutilization, or arise from a technical limitation of a hardware,software, or networking component.

In step 230, the system performs computations that predict the currentvolume's future capacity requirements. This is performed by means ofnovel applications of well-known computational techniques, such as alinear-regression analysis or a vector autoregression function formultivariate time series analysis.

If a storage pool j comprises n physical volumes, the allocated realcapacity of a volume v_(i) at a time t (such as the time-stamped entriesof the capacity profile) may each be denoted as AS^(t)(v_(i)). Forexample, by setting time t1=20171030:14:27:00, the first entry of Table2 may be denoted as AS^(t1)(P90375)=0.13 TB, meaning that 0.13 TB ofphysical storage had been allocated from physical volume P90375 at time20171030:14:27:00.

Similarly, the workload of a volume v_(i) at a time t (such as thetime-stamped entries of the workload profile) may each be denoted asIOPS^(t)(v_(i)). For example, by setting time t2=20160901:00:01:00:000,the first entry of Table 1 may be denoted as IOPS^(t)(P90375)=109 IOPS,meaning that physical volume P90375 experienced a workload of 109 I/Ooperations/second at time 20160901:00:01:00:000.

An amount of real storage of volume v_(i) expected “to be allocated” ata future time t may be defined as TBAS_(t)(v_(i)). Embodiments of thepresent invention in this step attempt to predict future storageallocations by computing values for TBAS at future times t.

TBAS_(t)(v_(i)) for a particular volume v_(i) at a future time t may bedetermined as a function f_(c) of information received in the capacityprofile and in the workload profile. Function f_(c) may be identified bymeans of methods known in the art, such as by means of a linearregression analysis, performed on an equation:

TBAS ^(t)(v _(i))=f _(c)(AS ^(t-1)(v _(i)),AS ^(t-2)(v _(i)), . . . AS^(t-q1)(v _(i)),IOPS ^(t-1)(v _(i)),IOPS ^(t-2)(v _(i)), . . . IOPS^(t-q2)(v _(i)))  (1)

where q1 is a time range within which to consider past capacityallocations for volume v, and q2 is a time range within which toconsider past workloads for volume v_(i). q1 and q2 may be selectedarbitrarily or as a function of technical or information-gatheringconstraints. The most important consideration when selecting q1 and q2is that those selections determine the number of AS and IOPS termsconsidered in Eq. 1. A greater number of terms will increase the fitaccuracy of function f_(c), but will increase computational complexityand may generate overfitting errors of a linear regression analysisperformed on Eq. 1. As in any linear regression, a person skilled in theart will know how to optimize Eq. (1) by adjusting the number of terms.And the easiest way to adjust the number of those terms is to adjust theboundaries of time spans q1 and q2.

Deriving a solution to Eq. (1), is subject to an additional constraint.Every pool j of physical storage has a maximum physical storage capacityC(j), received or otherwise identified by the processor in step 205.C(j) is thus an upper limit at time t upon the sum of: i) the totalamount of physical storage that may be allocated from all n volumes ofpool j at time t and ii) the to-be-allocated capacity derived for allvolumes v_(i) at time t.

This relationship may be expressed as:

Σ_(i=1) ^(n) AS ^(t)(v _(i))+TBAS ^(t)(v _(i))≤C(j)  (2)

Solving Eq. (1), subject to the constraint of Eq. (2), by means of astandard linear-regression analysis thus predicts a value of the storagecapacity to be allocated from volume v_(i) at time t. This computationmay be performed for all times t within any range of time q1 (or fromtime t−q1 through time 1) during which thin provisioning is expected tobe required. If, for example, an embodiment of the present invention isdesigned to predict thin-provisioning decisions for the next threeminutes, Equations (1) and (2) may be used to compute values ofTBAS_(t)(v_(i)) for a period of time ranging from the time ofcomputation through a time three minutes after the time of computation.This computation may in some embodiments be continuously repeated inorder to continue to compute values of TBAS^(t)(v_(i)) during a slidingthree-minute window.

In step 235, the system performs computations that predict the currentvolume's workload requirements at future times. This is performed bymeans of novel applications of well-known computational techniques, suchas a linear-regression analysis or a vector autoregression function formultivariate time series analysis.

As described in step 230, a storage pool j may comprise n physicalvolumes v, and a workload imposed upon a volume v_(i) at a time t (suchas the time-stamped entries of the workload profile) may be denoted asIOPS^(t)(v_(i)). Embodiments of the present invention in this stepattempt to predict future workloads on each volume by computing valuesfor IOPS at future times t that occur within a time span q2. Analogousto time span q1 in step 230, q2 may be set to be any historical range oftime over which an implementer desires to consider past workloadsimposed upon volume v_(i).

Analogous to computations for deriving TBAS^(t)(v_(i)), IOPS^(t)(v_(i))for a particular volume v_(i) at a future time t may be determined as afunction f_(w) of received information comprised by the capacity profileand by the workload profile. Like function f_(c), function f_(w) may beidentified by computational methods known in the art, such as a linearregression analysis, performed on an equation:

IOPS ^(t)(v _(i))=f _(w)(IOPS ^(t-1)(v _(i)),IOPS ^(t-2)(v _(i)), . . .IOPS ^(t-q2)(v _(i)),AS ^(t-1)(v _(i)),AS ^(t-2)(v _(i)), . . . AS^(t-q1)(v _(i)),TBAS ^(t)(v _(i)))  (3)

Like Eq. (1), Eq. (3) is subject to an additional constraint received orotherwise identified by the system in step 205. In this case, theadditional constraint W(j) identifies a maximum workload that may behandled by all volumes comprised by pool j. At any time t, IOPS ^(t)(j)(the mean or average workload of all physical volumes v of pool j),cannot exceed the maximum workload W(j) of pool j. Thisworkload-balancing constraint may be expressed as:

$\begin{matrix}{{{\overset{\_}{IOPS}}^{t}(j)} = {\frac{\sum\limits_{i = 1}^{n}{{IOPS}^{t}\left( v_{i} \right)}}{n(j)} \leq {W(j)}}} & (4)\end{matrix}$

where n(j) is the total number of volumes in pool j.

Solving Eq. (3), subject to the constraint of Eq. (4) by means of astandard linear-regression analysis thus predicts a likely workload tobe required from volume v_(i) at time t. Like the computation of Eq. 1.,this computation may be performed for all times t within any range oftime q2 (or from time t−q2 through time t) during which thinprovisioning is expected to be required.

In one example, the method of FIG. 2 may be used to determineto-be-allocated physical-storage allocation and expected workloads forevery volume v_(i) of a pool j by using known techniques oflinear-regression analysis to solve Equations (1) and (3), subject toconstraints of Equations (2) and (4). In this example, functions f_(c)and f_(w) of Equations (1) and (3) may be expressed as:

TBAS _(t)(v _(i∈1))=β₁ AS ^(t-1)(v _(i))+β₂ AS ^(t-2)(v _(i))+ . . .β^(q1) AS ^(t-q1)(v _(i))+α₁ IOPS ^(t-1)(v _(i))+α₂ IOPS ^(t-2)(v _(i))+. . . α_(q2) IOPS ^(t-q2)(v _(i))+ε_(t)  (1a)

IOPS ^(t)(v _(i∈1))=α₁ IOPS ^(t-1)(v _(i))+α₂ IOPS ^(t-2)(v _(i))+ . . .α_(q2) IOPS ^(t-q2)(v _(i))+β₁ AS ^(t-1)(v _(i))+β₂ AS ^(t-2)(v _(i))+ .. . β_(q1) AS ^(t-q1)(v _(i))+γTBAS ^(t)(v _(i))+ε_(t)  (3a)

where each α, β, and γ is a coefficient and ε_(t) is the error term,following a normal distribution.

In another example, if identical time windows q1 and q2 are chosen forstorage-allocation capacity profiles AS^(t)(v_(i)) and workload profilesIOPS^(t)(v_(i)), these computations may more simply derive functionsf_(c) and f_(w) as vector autoregression functions for a multivariatetime series analysis. In such a case, each variable becomes a linearfunction of past lags of itself and of the lags of the other variables.

If the time window size of both capacity and workload profiles is aduration of time q, the vector autoregression model of lag q at time tfor all volumes v of pool j is defined as:

y ^(t)(v _(i∈1))=A ₁ y ^(t-1)(v _(i))+ . . . A _(q) y ^(t-q)(v _(i))+u_(t)  (5)

where y^(t)(v_(i∈j))=(IOPS^(t)(v_(i)), TBAS^(t)(v_(i)))^(T) (T denotinga matrix transposition), each A is a coefficient matrix for i=1, . . . ,q, A_(i)=(α_(i), β_(i))^(T), and u_(t) is the error term, following amultivariate normal distribution. In this example, Eq. (5) replaces bothequations (1) and (3).

At the conclusion of step 235, the innermost iterative procedure ofsteps 210-235 will have completed an iteration that derivesTBAS^(t)(v_(i)) and IOPS^(t)(v_(i)) for one volume v of one pool j.

At the conclusion of a last iteration of the innermost procedure ofsteps 210-235, the system will have derived TBAS^(t)(v_(i)) andIOPS^(t)(v_(i)) for all volumes v_(i) of one shared pool j. The methodof FIG. 2 will then continue with the next iteration of the outermostprocedure of steps 200-235, to begin processing volumes of the nextpool.

At the conclusion of the final iteration of the outermost procedure, thesystem will have derived values of TBAS^(t)(v_(i)) and IOPS^(t)(v_(i))for all volumes v_(i) of all shared pools. Embodiments of the presentinvention will then continue with the procedure of FIG. 3.

FIG. 3 is a flow chart that illustrates additional steps of a method fora workload-aware thin-provisioning storage-allocation system inaccordance with embodiments of the present invention. FIG. 3 containssteps 300-315.

The system continues from step 235 of FIG. 2 to perform the method ofFIG. 3. Steps of FIG. 3 are performed after completing the finaliteration of the iterative procedure of steps 200-235 of FIG. 2. Themethod of FIG. 3 may be performed once for each shared pool j ofphysical storage.

In step 300, the system determines whether a predictedstorage-allocation TBAS and a predicted workload IOPS will result in aviolation of the pool workload-balancing constraint identified by Eq.(4) at a future time t or will result in the maximum-capacity constraintof Eq. (2). As discussed in the description of step 235 of FIG. 2, thismay happen if the mean workload of volumes comprised by a pool will at atime t exceed a maximum-workload threshold value for that pool or if thetotal physical storage capacity to be allocated from volumes of a poolat time t exceeds the maximum capacity of that entire pool.

If either violation is predicted to occur at time t for a volume of apool j, performing the TBAS pool j storage reallocation identified attime t would prevent pool j from continuing to operate. In such a case,the method of FIG. 3 must perform remedial action, by means of steps305-315, at or before time t. This remedial action may comprise anattempt to balance workloads among storage pools by moving a volume froman overloaded pool to another pool that has a lighter workload. In thisway, a single integrated mechanism may combine workload-balancing andstorage-allocation tasks, allowing workloads to be rebalanced byadjusting the distribution of physical volumes of storage among sharedpools.

But if the system in step 300 determines that no violation has occurred,the current iteration of the method of FIG. 3 ends and another iterationis performed for the next shared pool of physical storage. Thisprocedure may continue indefinitely, or it may be performed once foreach pool. In the latter case, some embodiments may perform some or allsteps of the method of FIG. 2 after every pool has been considered bythe method of FIG. 3.

In step 305, the system determines a minimized allocation costassociated with moving a volume from an overloaded pool that has toolarge a workload to a pool that has a lighter workload.

Relocating a physical volume from one storage pools requires nontrivialresources, which are referred to as a cost of moving that volume. If allvolumes of a pool satisfy both the maximum capacity constraint of Eq.(2) and the workload-balancing constraint of Eq. (4), no cost will beincurred because no volumes will be moved between pools.

If a cost is, however, incurred by a need to satisfy either the capacityor workload-balancing constraint by moving a volume to a different poolthe system will in this step attempt to minimize that cost. If theC(i,j)^(t) is a cost required to assign volume i to pool j at time t,and x(i,j)^(t) is an assignment function that returns 1 if the volumeassignment is complete and returns 0 otherwise, a minimized cost may beidentified by minimizing the function:

Σ_(V) _(i) _(∈V)Σ_(pool) _(j) _(∈P) C(i,j)^(t) x(i,j)^(t)

where P is the set of all pools and V is the set of all volumes of allpools.

This minimization procedure may be performed by any minimizationprocedure known in the art, such as the simplex method, where a feasiblesolution set forms a polytope defined by a constraints applied to theobjective function. In the present invention, for example, the simplexmethod would test adjacent vertices of a feasible solution set insequence such that the objective function improves or is unchanged ateach new vertex.

The minimization must also be performed subject to equations (1) and (3)and to the following additional constraints:

${{\sum\limits_{v_{i} \in {pool}_{j}}{{AS}\left( v_{i} \right)}} + {{TBASt}\left( v_{i} \right)}} \leq {C(j)}$${{\overset{\_}{IOPS}}^{t}(j)} = {\frac{\sum\limits_{v_{i} \in {pool}_{j}}{{IOPS}^{t}\left( v_{i} \right)}}{n(j)} \leq {W(j)}}$${\sum\limits_{{pool}_{j} \in P}x_{ij}^{t}} = {{1\mspace{14mu} {for}\mspace{14mu} v_{i}} \in V}$${\sum\limits_{v_{i} \in V}x_{ij}^{t}} = {{{{MAX}(j)}\mspace{14mu} {for}\mspace{14mu} {pool}_{j}} \in P}$x_(ij)^(t) ≥ 0  for  v_(i) ∈ V, pool_(j) ∈ P

where n(j) is the total number of volumes in pool j and where MAX(j) isa maximum number of pools that may be comprised by pool j. MAX(j) andn(j) may be identified automatically by the system, may be entered by auser, may be predefined by a business policy, may be selectedarbitrarily by an implementer, or may be chosen by any other criteriapreferred by a user.

In some embodiments, these computations may be further subject toadditional supplemental constraints received in step 225. Thiscomputation may be performed multiple times, each time determining aminimum cost incurred by moving a volume v_(i) to a different pool.

In step 310, the system selects a pool associated with the lowestminimum cost identified in step 305. If, for example, there are fourpools a, b, c, and d and the system in step 300 determines thatpredicted storage-capacity allocation and workload requirements will beimpossible for pool a to satisfy at time t, then one or more volumes ofpool a must be migrated to pool b, c, or d. When the system in step 305computes the minimized cost to move the one or more volumes to either ofthe three pools, the system determines that the lowest minimized cost isincurred when the volumes are moved to pool b. The system then selectspool b as the optimal target for the migrating volume.

The costs may comprise any expense or consumption of resources deemedsignificant by an implementer, or any other resource required to migratea volume from a first storage pool to a second storage pool. Forexample, a cost may be determined as a duration of time required tocomplete the migration, where a migration that takes longer to completeis considered more costly. In other examples, employee costs incurred bya migration may be considered significant, thus resulting in a move thatrequires greater employee time being considered more costly. Many otherdefinitions and computations of economic or financial cost, as are knownin the art, may be accommodated by embodiments of the present invention.

In some embodiments, it may be impossible to resolve a pool's predictedworkload or capacity-allocation problems by moving only one physicalvolume from that pool to another pool. In such cases, where movingmultiple physical volumes is necessary, the minimized-cost computationsof step 310 may determine that the multiple volumes may mostcost-effectively be moved to different pools.

In general, when there is a choice of which volume of an overloaded poolmust be moved to a different pool, volume choice may be made by a methodselected by an implementer. The most straightforward approach is to movethe volume that has the greatest workload at future time t (if theproblem to be solved is a violation of the workload-balancing constraintof Eq. (4)) or that has the greatest amount of allocated storage (if theproblem to be solved is a violation of the storage-capacity constraintof Eq. (2)). Other methods may also be used, such as selecting a minimalset of lower-workload or lower-allocation volumes, at the discretion ofan implementer. Embodiments of the present invention may accommodatesuch variations if desired by an implementer.

In step 315, the system performs the lowest-cost volume move orschedules the lowest-cost volume move to be performed at a time at orbefore time t. This move is performed by means of the networks, I/Ointerfaces 109, and storage devices 111 described in FIG. 2.

In some embodiments, the system will not yet perform the lowest-costmove, instead continuing through additional repetitions of the methodsof FIG. 2 and FIG. 3, each time revising the lowest minimized costdetermination of step 310 by processing successively more current,updated workload profiles and capacity profiles. In such embodiments,the system will implement the lowest-cost move as late as possible,using the latest profile data, in order to most accurately identify aconstraint violation and to most accurately select a lowest-costsolution to such a violation.

At the conclusion of step 315, the method of FIG. 3 may repeat once foreach shared pool of physical storage. At the conclusion of the lastrepetition of the method of FIG. 3, some embodiments of the presentinvention will resume performing steps of the method of FIG. 2.

What is claimed is:
 1. A storage-allocation system comprising: aprocessor, a memory coupled to the processor, a computer-readablehardware-storage device coupled to the processor, where the storagedevice contains program code configured to be run by the processor viathe memory to implement a method for provisioning a plurality ofphysical storage volumes, and a set of client computer-storagecontrollers coupled to the processor, the method comprising: receiving afirst workload profile and a first capacity profile for a first volumeof the plurality of physical storage volumes, and receiving a secondworkload profile and a second capacity profile for a second volume ofthe plurality of physical storage volumes, where the first volumebelongs to a first physical storage pool of a plurality of physicalstorage pools and the second volume belongs to a second physical storagepool of the plurality of physical storage pools, where the firstworkload profile identifies a workload that was directed to the firstvolume at a past time, and where the first capacity profile identifiesan amount of physical storage capacity that was allocated from the firstvolume at a past time; predicting a future amount of physical storageexpected to be allocated from the first volume at a future time;forecasting, as a function of the first workload profile, the firstcapacity profile, and the future amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time; determining that directing the forecasted workload to thefirst volume at the same time that the predicted amount of physicalstorage is allocated from the first volume would exceed a maximumcapacity of the first pool; and resolving the conflict by directing theclient computer-storage controllers to migrate the first volume from thefirst pool to the second pool.
 2. The system of claim 1, where theresolving further comprises: computing a set of minimized migrationcosts that each identifies a minimum cost incurred by moving the firstvolume to a different pool of the plurality of shared pools; andselecting the second pool such that a lowest cost of the set ofminimized migration costs is incurred by moving the first volume to thesecond pool.
 3. The system of claim 1, where the projecting comprisesperforming a linear-regression analysis on a linear equation subject toa constraint imposed by the maximum amount of physical storage capacity,where terms of the linear equation are derived from two or more recordsof the first workload profile and from two or more records of the firstcapacity profile.
 4. The system of claim 1, further comprising:computing a workload-balancing constraint that will exist at the futuretime as a mean value of workloads directed to all volumes of the firstpool at the future time.
 5. The system of claim 4, where the forecastingcomprises performing a linear-regression analysis on a linear equationsubject to the workload-balancing constraint, where terms of the linearequation are derived from two or more records of the first workloadprofile, two or more records of the first capacity profile, and thepredicted amount of physical storage.
 6. The system of claim 1, wherethe determining is performed by identifying that directing theforecasted workload to the first volume at the future time andallocating the predicted amount of physical storage from the firstvolume at the future time causes a resulting workload directed to thefirst pool to exceed the workload-balancing constraint.
 7. The system ofclaim 1, where the determining is performed by identifying thatdirecting the forecasted workload to the first volume at the future timeand allocating the predicted amount of physical storage from the firstvolume at the future time causes a total amount of physical storageallocated from the first pool to exceed the maximum amount of physicalstorage capacity.
 8. The system of claim 1, further comprising:receiving a set of supplemental constraints, where the forecasting andthe projecting comprise performing linear-regression analyses on a setof linear equations subject to one or more constraints of the set ofsupplemental constraints, where terms of the set of linear equations arederived from two or more records of the first workload profile and fromtwo or more records of the first capacity profile.
 9. The system ofclaim 1, where the projecting is performed as a function of the firstworkload profile and of the first capacity profile.
 10. A method forprovisioning a plurality of physical storage volumes, the methodcomprising: receiving a first workload profile and a first capacityprofile for a first volume of the plurality of physical storage volumes,and a second workload profile and a second capacity profile for a secondvolume of the plurality of physical storage volumes, where the firstvolume belongs to a first physical storage pool of a plurality ofphysical storage pools and the second volume belongs to a secondphysical storage pool of the plurality of physical storage pools, wherethe first workload profile identifies a workload that was directed tothe first volume at a past time, and where the first capacity profileidentifies an amount of physical storage capacity that was allocatedfrom the first volume at a past time; predicting a future amount ofphysical storage expected to be allocated from the first volume at afuture time; forecasting, as a function of the first workload profile,the first capacity profile, and the future amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time; determining that directing the forecasted workload to thefirst volume at the same time that the predicted amount of physicalstorage is allocated from the first volume would exceed a maximumcapacity of the first pool; and resolving the conflict by directing setof client computer-storage controllers to migrate the first volume fromthe first pool to the second pool.
 11. The method of claim 10, where theresolving further comprises: computing a set of minimized migrationcosts that each identifies a minimum cost incurred by moving the firstvolume to a different pool of the plurality of shared pools; andselecting the second pool such that a lowest cost of the set ofminimized migration costs is incurred by moving the first volume to thesecond pool.
 12. The method of claim 10, where the projecting comprisesperforming a linear-regression analysis on a linear equation subject toa constraint imposed by the maximum amount of physical storage capacity,where terms of the linear equation are derived from two or more recordsof the first workload profile and from two or more records of the firstcapacity profile.
 13. The method of claim 10, where the forecastingfurther comprises: computing a workload-balancing constraint that willexist at the future time as a mean value of workloads directed to allvolumes of the first pool at the future time, and performing alinear-regression analysis on a linear equation subject to theworkload-balancing constraint, where terms of the linear equation arederived from two or more of the records of the first workload profile,two or more records of the first capacity profile, and the predictedamount of physical storage.
 14. The method of claim 10, where thedetermining is performed by identifying that directing the forecastedworkload to the first volume at the future time and allocating thepredicted amount of physical storage from the first volume at the futuretime either: causes a resulting workload directed to the first pool toexceed the workload-balancing constraint, or causes a total amount ofphysical storage allocated from the first pool to exceed the maximumamount of physical storage capacity.
 15. The method of claim 10, furthercomprising providing at least one support service for at least one ofcreating, integrating, hosting, maintaining, and deployingcomputer-readable program code in the computer system, wherein thecomputer-readable program code in combination with the computer systemis configured to implement the receiving, the predicting, theforecasting, the determining, and the resolving.
 16. A computer programproduct, comprising a computer-readable hardware storage device having acomputer-readable program code stored therein, the program codeconfigured to be executed by a storage-allocation system comprising: aprocessor, a memory coupled to the processor, a computer-readablehardware-storage device coupled to the processor, where the storagedevice contains program code configured to be run by the processor viathe memory to implement a method for provisioning a plurality ofphysical storage volumes, and a set of client computer-storagecontrollers coupled to the processor, the method comprising: receiving afirst workload profile and a first capacity profile for a first volumeof the plurality of physical storage volumes, and receiving a secondworkload profile and a second capacity profile for a second volume ofthe plurality of physical storage volumes, where the first volumebelongs to a first physical storage pool of a plurality of physicalstorage pools and the second volume belongs to a second physical storagepool of the plurality of physical storage pools, where the firstworkload profile identifies a workload that was directed to the firstvolume at a past time, and where the first capacity profile identifiesan amount of physical storage capacity that was allocated from the firstvolume at a past time; predicting a future amount of physical storageexpected to be allocated from the first volume at a future time;forecasting, as a function of the first workload profile, the firstcapacity profile, and the future amount of physical storage, aforecasted workload expected to be directed to the first volume at thefuture time; determining that directing the forecasted workload to thefirst volume at the same time that the predicted amount of physicalstorage is allocated from the first volume would exceed a maximumcapacity of the first pool; and resolving the conflict by directing theclient computer-storage controllers to migrate the first volume from thefirst pool to the second pool.
 17. The computer program product of claim16, where the resolving further comprises: computing a set of minimizedmigration costs that each identifies a minimum cost incurred by movingthe first volume to a different pool of the plurality of shared pools;and selecting the second pool such that a lowest cost of the set ofminimized migration costs is incurred by moving the first volume to thesecond pool.
 18. The computer program product of claim 16, where theprojecting comprises performing a linear-regression analysis on a linearequation subject to a constraint imposed by the maximum amount ofphysical storage capacity, where terms of the linear equation arederived from two or more records of the first workload profile and fromtwo or more records of the first capacity profile.
 19. The computerprogram product of claim 16, where the forecasting further comprises:computing a workload-balancing constraint that will exist at the futuretime as a mean value of workloads directed to all volumes of the firstpool at the future time, and performing a linear-regression analysis ona linear equation subject to the workload-balancing constraint, whereterms of the linear equation are derived from two or more of the recordsof the first workload profile, two or more records of the first capacityprofile, and the predicted amount of physical storage.
 20. The computerprogram product of claim 16, where the determining is performed byidentifying that directing the forecasted workload to the first volumeat the future time and allocating the predicted amount of physicalstorage from the first volume at the future time causes either: aresulting workload directed to the first pool to exceed theworkload-balancing constraint, or a total amount of physical storageallocated from the first pool to exceed the maximum amount of physicalstorage capacity.